package day01

object EqualsDemo {
  def main(args: Array[String]): Unit = {

    // Scala（基于 JVM）会将这个字符串放入 字符串常量池（String Pool）
    // s1 指向常量池中的 "hello"
    val s1 = "hello"

    // 使用 new String(...) 显式创建了一个新的字符串对象，即使内容相同，也会在堆中分配新的内存地址。
    // 这个对象的内容是 "hello"，但它不会进入字符串常量池（除非调用 intern()）
    // s2 指向堆中一个新的、内容相同但地址不同的字符串对象
    val s2 = new String("hello")

    // 在 Scala 中，== 是通用的相等性比较操作符。
    //它会自动调用 equals 方法，并且会先做 null 安全检查。
    println( s1 == s2 )     // true

    // String.equals() 比较的是字符串的内容（字符序列），而不是对象引用。
    println(s1.equals(s2))  // true

    // .eq 是 Scala 中用于引用相等性（reference equality） 的方法。
    //它等价于 Java 中的 == 对于对象的比较（即判断是否是同一个对象实例）。
    println(s1.eq(s2))      // false
  }
}
